//顺序表--静态
#include <iostream>
#include <ctime>
#include "rrand.h"
using namespace std;
#define MAX_ZIZE 100
typedef int ElemType;
typedef struct sqllist
{
    ElemType data[MAX_ZIZE];//顺序表的数据
    int size;//表长
}sqllist;
void init_sqlist(sqllist &l){
    l.size=0;
}
//顺序表的插入函数
void insert_sqllist(int num,int subscript,sqllist &l){
    if(l.size>=MAX_ZIZE){
        cout<<"顺序表已满无法插入"<<endl;
    }
    else if(subscript>MAX_ZIZE){
        cout<<"插入位置非法"<<endl;
    }
    else{
        for(int i=l.size-1;i>=subscript;i--){
            l.data[i+1]=l.data[i];
        }
        l.data[subscript]=num;
        l.size++;
        cout<<"元素"<<num<<"插入成功"<<endl;
    }
}
//顺序表的查找函数--查找指定元素，如果元素在顺序表中返回元素下表，不存在返回-1
int index_num_sqllist(int num,sqllist l){
    for(int i=0;i<l.size;i++){
        if(l.data[i]==num){
            return i;
        }
    }
    return -1;
}
//顺序表的删除函数--删除指定元素
bool pop_sqllist(int num,sqllist &l){
    int index=index_num_sqllist(num,l);
    if(index==-1){
        cout<<"顺序表中没有要删除的元素"<<endl;
        return false;
    }
    else{
        for(int i=index;i<l.size;i++){
            l.data[i]=l.data[i+1];
        }
        l.size--;
        cout<<"删除成功"<<endl;
        return true;
    }
}
//顺序表的修改函数
void edit_sqllist(int num,int m,sqllist &l){
    int n=index_num_sqllist(num,l);
    if(n==-1){
        cout<<"顺序表中没有所要修改的元素"<<endl;
    }
    else{
        l.data[n]=m;
        cout<<"修改成功"<<endl;
    }
}
//顺序表的输出函数
void print_sqllist(sqllist l){
    if(l.size==0){
        cout<<"当前顺序表为空"<<endl;
    }
    else{
        for(int i=0;i<l.size;i++){
            cout<<l.data[i]<<" ";
        }
        cout<<endl;
    }
    cout<<"输出完成"<<endl;
}
int main()
{
    srand(time(NULL));
    int *arr=new int[10];
    rrand(arr,10);
    sqllist l;
    init_sqlist(l);
    for(int i=0;i<10;i++){
        insert_sqllist(arr[i],0,l);
    }
    edit_sqllist(3,2,l);
    pop_sqllist(1,l);
    print_sqllist(l);
    return 0;
}